/***本脚本适用于小世界模拟器2版本1.1.3,新增了几个接口函数.
****如果你用之前的版本仍然能够正常创世并运行..
****但是,新增的接口函数将不会生效.*/

//游戏内变量，存档时，保存对象data即可。
var data = {
	//软妹币
	rmb: 2000 + get_num(100),
	//疼迅初始价
	tx: 180 + get_num(10),
	//粑粑初始价
	bb: 180 + get_num(10),
	//并夕夕初始价
	pdd: 180 + get_num(10),
	//疼丝拉初始价
	tsl: 180 + get_num(10),
	//蝈酒初始价
	mt: 180 + get_num(10),
	//持有疼迅数量
	own_tx: 0,
	//持有粑粑数量
	own_bb: 0,
	//持有并夕夕数量
	own_pdd: 0,
	//持有疼丝拉数量
	own_tsl: 0,
	//持有蝈酒数量
	own_mt: 0,
}
//不存档的变量
var cd = 0; //行情价格刷新时间间隔
var _love_ = 0; ///专属变量名-爱心兑换中的爱心点数,请勿修改

//获取1个随机数
function get_num(n) {
	return Math.floor((Math.random() * 8 * n) - 4 * n); //在-4*n到4*n之间随机取值
}
//每秒调用主循环，控制游戏进程
function mainloop() {
	//每秒使股市刷新进度+1
	cd = cd + 1;
	//达到5秒时，刷新股市价格，并重置进度
	if (cd >= 5) {
		cd = 0;
		data.tx += get_num(1);
		data.bb += get_num(1);
		data.pdd += get_num(1);
		data.tsl += get_num(1);
		data.mt += get_num(1);
	}
}
//顶部显示函数,文本显示在世界名与正文之间,可选项
function top_show(){
	return "<big>今天</big><br>依然是<font color=\"#FF2400\">福星高照</font>适合演示的好日子!<br><small>适宜版本v1.1.3及以上</small>"
}
//专属函数名-显示在世界面板左侧全幅的内容(当超长时占全屏),每x秒刷新(x可通过config()函数配置),下同
function left_show() {
	//调用主循环
	mainloop();
	//采用字符串数组的形式整理显示内容
	var str_list = [
		//强迫症想对齐文字的话，建议使用全角空格代替一个汉字位置，半角空格代替符号或英文字母位置。两个半角不等于一个全角。
		"-股市行情-", "\n",
		"疼迅.￥　　", data.tx, "\n",
		"粑粑.￥　　", data.bb, "\n",
		"并夕夕.￥　", data.pdd, "\n",
		"疼丝拉.￥　", data.tsl, "\n",
		"蝈酒.￥　　", data.mt,
	];
	//将字符串数组连接为一个字符串并返回。
	var str = "";
	for (s in str_list) {
		str = str + str_list[s];
	}
	return str;
}
//专属函数名-显示在世界面板左侧半幅的内容(固定只显示半屏,当超长时换行),每x秒调用,不能与left_show()同时使用,否则文本显示会重叠.
function left_half_show(){
  //
}

//专属函数名-显示在世界面板右侧的内容,每x秒调用
function right_show() {
	//采用字符串数组的形式整理显示内容
	var str_list = [
		"-流动资金-", "\n",
		"软币 　　　　", data.rmb, "\n",
		"-股票资产-", "\n",
		"疼迅.持有　　", data.own_tx, "\n",
		"粑粑.持有　　", data.own_bb, "\n",
		"并夕夕.持有　", data.own_pdd, "\n",
		"疼丝拉.持有　", data.own_tsl, "\n",
		"蝈酒.持有　　", data.own_mt,
	];
	//将字符串数组连接为一个字符串并返回。
	var str = "";
	for (s in str_list) {
		str = str + str_list[s];
	}
	return str;
}
//指令集
function command_box(id) {
	switch (id) {
		case "帮助":
			//采用字符串数组的形式整理显示内容
			var str_list = [
				"本脚本演示世界需版本1.1.x以上。", "\n",
				"低买高卖积累软币资产。", "\n",
				"股价负数意味着严重负债,将被停牌并禁止交易。", "\n",
				"指令有:买疼迅,买粑粑,买并夕夕...等；以及卖疼迅,卖粑粑,卖并夕夕...等。", "\n",
				"爱心兑换：可用3点爱心兑换1千软币！", "\n",
			];
			//将字符串数组连接为一个字符串并返回。
			var str = "";
			for (s in str_list) {
				str = str + str_list[s];
			}
			return str;
			//return 后的代码不执行，可不加break
			//break;
		case "买疼迅":
			return buy("tx", "own_tx", "疼迅");
		case "卖疼迅":
			return sell("tx", "own_tx", "疼迅");
		case "买粑粑":
			return buy("bb", "own_bb", "粑粑");
		case "卖粑粑":
			return sell("bb", "own_bb", "粑粑");
		case "买并夕夕":
			return buy("pdd", "own_pdd", "并夕夕");
		case "卖并夕夕":
			return sell("pdd", "own_pdd", "并夕夕");
		case "买疼丝拉":
			return buy("tsl", "own_tsl", "疼丝拉");
		case "卖疼丝拉":
			return sell("tsl", "own_tsl", "疼丝拉");
		case "买蝈酒":
			return buy("mt", "own_mt", "蝈酒");
		case "卖蝈酒":
			return sell("mt", "own_mt", "蝈酒");
	}
}
//出售指令，需要传入出售那一支股的股价变量名，对应持有的那一支股的变量名，和股票名称三个参数
function sell(gu, own_gu, gu_name) {
	var str = "";
	if (data[gu] > 0) {
		if (data[own_gu] >= 1) {
			data.rmb = data.rmb + data[gu];
			data[own_gu] = data[own_gu] - 1;
			str = gu_name + "股票 卖出成功";
		} else {
			str = "卖出失败，你未持有 " + gu_name + "股票 ";
		}
	} else {
		str = gu_name + "严重负债,停牌中,禁止交易!";
	}
	return str;
}
//购买指令，需要传入出售那一支股的股价变量名，对应持有的那一支股的变量名，和股票名称三个参数
function buy(gu, own_gu, gu_name) {
	var str = "";
	if (data[gu] > 0) {
		if (data.rmb >= data[gu]) {
			data.rmb = data.rmb - data[gu];
			data[own_gu] = data[own_gu] + 1;
			str = gu_name + "股票 购买成功";
		} else {
			str = "软币不足，" + gu_name + "股票 购买失败";
		}
	} else {
		str = gu_name + "严重负债,停牌中,禁止交易!";
	}
	return str;
}

///专属函数名-爱心兑换,使用爱心兑换时调用
function love_cash() {
	//只作判断,扣减操作交由主逻辑.
	if (_love_ >= 3) {
		data.rmb += 1000;
	}
	//将所需消耗的爱心递给主逻辑进行判断扣减.
	return "3"; 
}

//专属函数名-存档,退出世界时调用一次,请遵循如下数据组织格式
function save() {
	//对象变量存档前需要进行序列化
	str = JSON.stringify(data);
	return "data=" + str + ";"
}

//专属函数名-读档,进入世界时调用一次,无需改动照搬即可.
function load(sl) {
	try {
		eval(sl);
		//读档后需要将文本反序列化为对象
		data = JSON.parse(data);
	} catch (err) {}
}

//扩展配置函数,字符串返回值,字段之间加逗号,不要有空格,更多功能逐渐更新补充
function config(){
	//sleep参数:800为全局循环体刷新时间(800毫秒,1秒=1000毫秒),生效范围:左侧全幅显示函数left_show()，右侧半幅显示函数right_show()，左侧半幅显示函数left_half_show()，顶部显示函数top_show()
    //x_font参数:世界面板左侧全幅字号大小left_font,右侧半幅字号right_font,左侧半幅字号left_half_font,顶部字号top_font,推荐字号14,自行按需调整	
    return "sleep,800,left_font,14,right_font,14,left_half_font,14,top_font,12"
}
